package com.sit.estatemanagementserver.controller;

import com.sit.estatemanagementserver.enity.Owner;
import com.sit.estatemanagementserver.enity.Register;
import com.sit.estatemanagementserver.enity.Response;
import com.sit.estatemanagementserver.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users") // 重构: 路径统一为复数
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("/register")
    public Response<?> register(@RequestBody Register register) {
        if (userService.register(register)) {
            return Response.success();
        } else {
            return Response.error("注册失败，该手机号可能已被注册！");
        }
    }

    // 重构: 登录使用POST方法，并通过@RequestBody传递凭证，更安全
    @PostMapping("/login")
    public Response<?> login(@RequestBody Owner loginRequest) {
        if (userService.login(loginRequest.getPhone(), loginRequest.getPassword())) {
            return Response.success();
        } else {
            return Response.error("账号或密码错误！");
        }
    }

    @GetMapping("/{phone}")
    public Response<Owner> findUser(@PathVariable String phone) {
        Owner owner = userService.getOwnerByPhone(phone);
        if (owner == null) {
            return Response.error("该账号不存在");
        } else {
            // 安全起见，不应在API中返回密码。这里创建一个新对象或在实体中用@JsonIgnore注解password字段。
            // 为保持代码最小改动，此处仍返回完整owner，但在生产环境中强烈建议处理。
            owner.setPassword(null); // 简单处理：返回前将密码设置为空
            return Response.success(owner);
        }
    }
}